TI TMS9900 Architecture
Overview
The TMS9900 is a 16-bit processor released by Texas Instruments in 1976. It's a single chip implementation of TI’s TI-990 mini-computer architecture. It was used in low-end versions of the TI-990 as well as home computers like the TI-99/4 and TI-99/4A.
The TMS9980 is a simplified version of the TMS9900 used in lower end computers like the TM-990/189 university board.
The following is based on the TMS9900 Microprocessor Assembly Language Programmer's Guide and the Assembler built into UNIBUG for the TM 990/189
Source Line Format
[Label] Opcode [Operand[,Operand]] [Comment]
Label
The label field is used to identify the instruction for use by other instructions and corresponds to the location of that instruction
A label can be up to 6 characters (2 for the 189) and must start in the first column with an alphabetic character. The rest of the characters can be alphanumeric
Opcode
The opcode field contains the nonmuonic for the instruction or assembler directive and must be separated from the label with whitespace even if the label is blank
Operands
Operands are separated from the opcode by whitespace
Operands are arguments to the instruction or directive. If multiple operands are specified then they should be separated by commas
The 189 assembler doesn't allow spaces between operands
Comments
The comment field contains information used to annotate and describe the program and may contain any ASCII characters. Comments must be separated from the opcode, or operands if they are present, by whitespace
A single line comment starts with an asterisk in the first column
Number Literals
Hexadecimal values are prefixed with >
Directives
AORG
Sets the current location for assembling instructions
label AORG value
BSS
Advances the current location by the specified number of bytes
label BSS value
DATA
Places 16-bit values at the current location. Can also take two characters contained in single quotes
label DATA value[,value…]
END
Ends the current program
END entryPoint
EQU
Defines a compiler symbol and assigns it a value
symbol equ value
TEXT
Takes a character string as input in double quotes and places it at the current location. A zero byte is placed after the last character
TEXT "value"